package org.angelica.utils.id;

import org.apache.commons.lang3.time.DateFormatUtils;

import java.util.UUID;

/**
 * id 生成器
 * @author aizhimin
 *
 */
public class IdGeneratorUtil {

	/**
	 * 盐
	 */
	private static final String SALT = "54a￥@6123dsdl7%asda$%&**((afsdfad";
	
	/**
	 * mongodb id 生成器，24位
	 * @return
	 */
	public static String getObjectId() {
		return ObjectId.get().toHexString();
	}

	/**
	 * 将long类型id，转换成hash id，用于隐藏真实ID
	 * @param id
	 * @param length 指定hashid的长度
	 * @return
	 */
	public static String encodeHashId(Long id,Integer length) {
		Hashids hashids = new Hashids(SALT,length);
		return hashids.encode(id);
	}
	/**
	 * hashid 转换成真是ID
	 * @param hash
	 * @param length 指定hashid的长度
	 * @return
	 */
	public static long decodeHashId(String hash,Integer length) {
		Hashids hashids = new Hashids(SALT,length);
		return hashids.decode(hash)[0];
	}

	/**
	 * 获取UUID
	 * @return
	 */
	public static String getRandomUuid() {
		return UUID.randomUUID().toString().replaceAll("-", "");
	}
	/**
	 * 获取格式化时间戳
	 * @return
	 */
	public static String getRandomFormatTimeId(){
		return DateFormatUtils.format(System.currentTimeMillis(),"yyyyMMddHHmmssSSS");
	}
}
